# coding=utf-8
from .CMemory import CMemory


class CSkill(CMemory):
    def __init__(self, data):
        super(CSkill, self).__init__(data)

    def ptSkillBin(self):
        return self.get_dword(0x00)

    def ptNextSkill(self):
        return self.get_dword(0x04)

    def Mode(self):
        return self.get_dword(0x08)

    def TargetInfo(self):
        return self.get_dword(0x018)

    def TargetType(self):
        return self.get_dword(0x1c)

    def TargetUNID(self):
        return self.get_dword(0x20)

    def Slvl(self):
        return self.get_dword(0x28)

    def SlvlBonus(self):
        return self.get_dword(0x2c)

    def State(self):
        return self.get_dword(0x34)  # +34 (-1 if index exist)

    def Param1(self):
        return self.get_dword(0x38)  # +38 (nb current charge)

    def Param2(self):
        return self.get_dword(0x3c)


class CSkillInfo(CMemory):
    def __init__(self, data):
        super(CSkillInfo, self).__init__(data)

    def GameRelated(self):
        return self.get_dword(0x00)

    def ptFirstSkill(self):
        return self.get_dword(0x04)

    def ptLeftSkill(self):
        return self.get_dword(0x08)

    def ptRightSkill(self):
        return self.get_dword(0x0c)

    def ptCurrentSkill(self):
        return self.get_dword(0x10)


class RoomTile(CMemory):
    def __init__(self, data):
        super(RoomTile, self).__init__(data)

    def ptRoom2(self):
        return self.get_dword(0x00)

    def ptNext(self):
        return self.get_dword(0x04)

    def ptNum(self):
        return self.get_dword(0x10)


class PresetUnit(CMemory):
    def __init__(self, data):
        super(PresetUnit, self).__init__(data)

    def TxtFileNo(self):
        return self.get_dword(0x04)

    def PosX(self):
        return self.get_dword(0x08)

    def ptNext(self):
        return self.get_dword(0x0c)

    def UnitType(self):
        return self.get_dword(0x14)

    def PosY(self):
        return self.get_dword(0x18)  #


class DrlgAct(CMemory):
    def __init__(self, data):
        super(DrlgAct, self).__init__(data)

    def ptRoom1(self):
        return self.get_dword(0x10)

    def ActNo(self):
        return self.get_dword(0x14)

    def ptDrlgMisc(self):
        return self.get_dword(0x48)


class DrlgMisc(CMemory):
    def __init__(self, data):
        super(DrlgMisc, self).__init__(data)

    def StaffTombLvl(self):
        return self.get_dword(0x94)

    def ptMemPool(self):
        return self.get_dword(0x478)

    def ptLevelFirst(self):
        return self.get_dword(0x47C)

    def BossTombLvl(self):
        return self.get_dword(0x484)


class DrlgLevel(CMemory):
    def __init__(self, data):
        super(DrlgLevel, self).__init__(data)

    def ptRoom2First(self):
        return self.get_dword(0x10)

    def ptNext(self):
        return self.get_dword(0x1AC)

    def ptDrlgMisc(self):
        return self.get_dword(0x1B4)

    def LvlType(self):
        return self.get_dword(0x1C0)

    def LevelNo(self):
        return self.get_dword(0x1D0)


class DrlgRoom2(CMemory):
    def __init__(self, data):
        super(DrlgRoom2, self).__init__(data)

    def ptRoomsNear(self):
        return self.get_dword(0x08)

    def ptLvlPreset(self):
        return self.get_dword(0x20)

    def ptNext(self):
        return self.get_dword(0x24)

    def RoomTiles(self):
        return self.get_dword(0x28)

    def RoomsNear(self):
        return self.get_dword(0x2C)

    def ptRoom1(self):
        return self.get_dword(0x30)

    def PosX(self):
        return self.get_dword(0x34)

    def PosY(self):
        return self.get_dword(0x38)

    def SizeX(self):
        return self.get_dword(0x3C)

    def SizeY(self):
        return self.get_dword(0x40)

    def PresetType(self):
        return self.get_dword(0x48)

    def ptRoomTiles(self):
        return self.get_dword(0x4C)

    def ptDrlgLevel(self):
        return self.get_dword(0x58)

    def ptPresetUnits(self):
        return self.get_dword(0x5C)


class Act(CMemory):
    def __init__(self, data):
        super(Act, self).__init__(data)

    def ActNum(self):
        return self.get_dword(0x00)

    def ptFirstRoom(self):
        return self.get_dword(0x04)

    def ptMisc(self):
        return self.get_dword(0x08)

    def pfnActCallBack(self):
        return self.get_dword(0x18)


class DrlgRoom1(CMemory):
    def __init__(self, data):
        super(DrlgRoom1, self).__init__(data)

    def ptRoomsNear(self):
        return self.get_dword(0x00)

    def ptRoom2(self):
        return self.get_dword(0x10)

    def RoomsNear(self):
        return self.get_dword(0x24)

    def ptUnitFirst(self):
        return self.get_dword(0x74)

    def ptAct(self):
        return self.get_dword(0x78)

    def ptNext(self):
        return self.get_dword(0x7C)


class ActMap(CMemory):
    def __init__(self, data):
        super(ActMap, self).__init__(data)

    def IsNotManaged(self):
        return self.get_dword(0x00)

    def ptFirstRoom(self):
        return self.get_dword(0x0C)


class GameStruct(CMemory):
    def __init__(self, data):
        super(GameStruct, self).__init__(data)

    def DifficultyLevel(self):
        return self.get_byte(0x6D)

    def IsLODGame(self):
        return self.get_dword(0x70)

    def ptClientLastJoined(self):
        return self.get_dword(0x88)

    def Client(self):
        return self.get_dword(0x8C)

    def GameFrame(self):  # 游戏时间*25
        return self.get_dword(0xA8)

    def MapAct(self, n):
        return self.get_dword(0xBC + n * 4)

    def ptClientList(self):
        return self.get_dword(0x10F8)

    def Units(self, n):
        return self.get_dword(0x1120 + n * 4)  # n < 0xA00

    def RoomTitles(self, n):
        return self.get_dword(0x1B20 + n * 4)  # n < 0x200


class CClientGameInfo(CMemory):
    def __init__(self, data):
        super(CClientGameInfo, self).__init__(data)

    def GameName(self):
        return self.get_byte_pointer(0x1A)

    def GameServerIp(self):
        return self.get_byte_pointer(0x32)

    def AccountName(self):
        return self.get_byte_pointer(0x88)

    def CharName(self):
        return self.get_byte_pointer(0xB8)

    def RealmName(self):
        return self.get_byte_pointer(0xD0)

    def GameMode(self):
        return self.get_byte(0x1EB)

    def CharStat(self):
        return self.GameMode() & 0b011

    def Hardcore(self):
        return self.GameMode() & 0b1100

    def Expansion(self):
        return self.GameMode() & 0b100000

    def Ladder(self):
        return self.GameMode() & 0b11000000

    def ReadyAct(self):
        return self.get_byte(0x1EC)

    def ServerVersion(self):
        return self.get_byte_pointer(0x228)

    def GamePassword(self):
        return self.get_byte_pointer(0x240)


class CPath(CMemory):
    def __init__(self, data):
        super(CPath, self).__init__(data)

    def OffsetX(self):
        return self.get_word(0x00)

    def PosX(self):
        return self.get_word(0x02)

    def OffsetY(self):
        return self.get_word(0x04)

    def PosY(self):
        return self.get_word(0x06)

    def MapPosX(self):
        return self.get_dword(0x08)

    def MapPosY(self):
        return self.get_dword(0x0C)

    def TargetX(self):
        return self.get_dword(0x10)

    def TargetY(self):
        return self.get_dword(0x12)

    def ptRoom1(self):
        return self.get_dword(0x1C)

    def ptRoomUnk(self):
        return self.get_dword(0x20)

    def ptUnit(self):
        return self.get_dword(0x30)

    def Flags(self):
        return self.get_dword(0x34)

    def PathType(self):
        return self.get_dword(0x3C)

    def PrevPathType(self):
        return self.get_dword(0x40)

    def UnitSize(self):
        return self.get_dword(0x44)

    def ptTargetUnit(self):
        return self.get_dword(0x58)

    def TargetType(self):
        return self.get_dword(0x5C)

    def TargetId(self):
        return self.get_dword(0x60)

    def Direction(self):
        return self.get_byte(0x64)


class CUnitInventory(CMemory):
    def __init__(self, data):
        super(CUnitInventory, self).__init__(data)

    def Tag(self):
        return self.get_byte(0x00)  # 0x01020304

    def ptChar(self):
        return self.get_dword(0x08)

    def ptItem(self):
        return self.get_dword(0x0C)

    def ptLastItem(self):
        return self.get_dword(0x10)

    def ptInvInfo(self):
        return self.get_dword(0x14)

    def InvInfoCount(self):
        return self.get_dword(0x18)

    def WeaponId(self):
        return self.get_dword(0x1C)

    def Inventory1(self):
        return self.get_dword(0x20)

    def CurrentUsedSocket(self):
        return self.get_dword(0x28)  # a variable to know how many sockets that have added to item

    def Inventory2C(self):
        return self.get_dword(0x2C)

    def Inventory30(self):
        return self.get_dword(0x30)

    def ptCorpse(self):
        return self.get_dword(0x34)

    def NextCorpseId(self):
        return self.get_dword(0x3C)


class CStateEx(CMemory):
    def __init__(self, data):
        super(CStateEx, self).__init__(data)

    def isc_param(self):
        return self.get_word(0x00)

    def isc_id(self):
        return self.get_word(0x02)

    def isc_value(self):
        return self.get_long(0x04)


class CStatsList(CMemory):
    def __init__(self, data):
        super(CStatsList, self).__init__(data)

    def MemoryPool(self):
        return self.get_dword(0x00)

    def ptUnit(self):
        return self.get_dword(0x04)

    def UnitType(self):
        return self.get_dword(0x08)

    def AllocUnitID(self):
        return self.get_dword(0x0C)

    def flags(self):
        return self.get_dword(0x10)

    def IsDisabled(self):
        return self.flags() & 0x00002000

    def Id(self):
        return self.get_dword(0x14)

    def ptBaseStatsTable(self):
        return self.get_dword(0x24)  # return StatEx

    def NbBaseStats(self):
        return self.get_word(0x28)

    def SizeOfBaseStatsTable(self):
        return self.get_word(0x2A)

    def ptStatList(self):
        return self.get_dword(0x2C)  # return CStatsList*

    def ptNextList(self):
        return self.get_dword(0x30)

    def ptPrevList(self):
        return self.get_dword(0x34)

    def ptAffixStats(self):
        return self.get_dword(0x3C)

    def ptNextStats2(self):
        return self.get_dword(0x40)

    def ptChar(self):
        return self.get_dword(0x44)

    def ptItem(self):
        return self.get_dword(0x44)

    def ptStatsTable(self):
        return self.get_dword(0x48)  # return StatEx

    def NbStats(self):
        return self.get_word(0x4C)

    def SizeOfStatsTable(self):
        return self.get_word(0x4E)


class CMonsterData(CMemory):
    def __init__(self, data):
        super(CMonsterData, self).__init__(data)

    def ptMonsterTxt(self):
        return self.get_dword(0x00)

    def Components(self, n):  # n < 16
        return self.get_byte(0x04 + n)

    def NameSeed(self):
        return self.get_word(0x14)

    def Flags(self):
        return self.get_dword(0x16)

    def Other(self):
        return self.Flags() & 0x01

    def Unique(self):
        return self.Flags() & 0x02

    def Champ(self):
        return self.Flags() & 0x04

    def Boss(self):
        return self.Flags() & 0x08

    def fMinion(self):
        return self.Flags() & 0x10

    def Poss(self):
        return self.Flags() & 0x20

    def Ghost(self):
        return self.Flags() & 0x40

    def Multi(self):
        return self.Flags() & 0x80

    def LastMode(self):
        return self.get_byte(0x17)

    def Duriel(self):
        return self.get_dword(0x18)

    def Enchants(self, n):  # n < 9
        return self.get_byte(0x1C + n)

    def UniqueNo(self):  # hcIdx from superuniques.txt for superuniques
        return self.get_word(0x26)

    def ptAiGeneral(self):
        return self.get_dword(0x28)

    def wszMonName(self):  # server side is pAiParams
        return self.get_widebyte_pointer(0x2C)

    def ptAiParams(self):  # client side is wszMonName
        return self.get_dword(0x2C)

    def NecroPet(self):
        return self.get_dword(0x40)

    def AiState(self):  # this is used to tell monsters what special state has been set, this tells them they just got attacked etc
        return self.get_widebyte_pointer(0x54)

    def LevelNo(self):
        return self.get_widebyte_pointer(0x58)

    def SummonerFlags(self, n):  # byte used only by the summoner
        return self.get_byte(0x5C)


class CObjectData(CMemory):
    def __init__(self, data):
        super(CObjectData, self).__init__(data)

    def ptObjectsBIN(self):
        return self.get_dword(0x00)

    def LevelID(self):
        return self.get_dword(0x04)


class CItemData(CMemory):
    def __init__(self, data):
        super(CItemData, self).__init__(data)

    def Quality(self):
        return self.get_dword(0x00)

    def SeedLow(self):
        return self.get_dword(0x04)

    def SeedHi(self):
        return self.get_dword(0x08)

    def PlayerID(self):
        return self.get_dword(0x0C)

    def SeedStarting(self):
        return self.get_dword(0x10)

    def Flags1(self):
        return self.get_dword(0x14)

    def Flags2(self):
        return self.get_dword(0x18)

    def IsIndentified(self):
        return self.Flags2() & 0x00000002

    def IsUnindentified(self):
        return self.Flags2() & 0x00000010

    def IsBroken(self):
        return self.Flags2() & 0x00000100

    def IsSocketed(self):
        return self.Flags2() & 0x00000800

    def IsEtheral(self):
        return self.Flags2() & 0x00400000

    def IsRuneword(self):
        return self.Flags2() & 0x04000000

    def IsPersonalized(self):
        return self.Flags2() & 0x10000000

    def Guid1(self):  # Global Unique ID 1
        return self.get_dword(0x1C)

    def Guid2(self):
        return self.get_dword(0x20)

    def Guid3(self):
        return self.get_dword(0x24)

    def UniqueID(self):
        return self.get_dword(0x28)

    def Ilvl(self):
        return self.get_byte(0x2C)

    def Version(self):
        return self.get_word(0x30)

    def RarePrefix(self):
        return self.get_word(0x32)

    def RareSuffix(self):
        return self.get_word(0x34)

    def AutoPref(self, n):  # n < 3
        return self.get_word(0x36)

    def Prefix(self, n):  # n < 3
        return self.get_word(0x38 + n * 2)

    def Suffix(self, n):  # n < 3
        return self.get_word(0x3E + n * 2)

    def BodyLocation(self):  # 00 = noequip/inBelt  /*01 = head;02 = neck;03 = tors;04 = rarm;05 = larm;06 = lrin;07 = rrin;08 = belt;09 = feet;0A = glov;0B = ralt;0C = lalt
        return self.get_byte(0x44)

    def ItemLocation(self):  # -1 equiped,  0 Inventory , 3 cube , 4 stash
        return self.get_byte(0x45)

    def EarLevel(self):
        return self.get_byte(0x48)

    def VarGfx(self):
        return self.get_byte(0x49)

    def szPersonalName(self):  # Personalized / Ear name
        return self.get_byte_pointer(0x4A)

    def ptOwnerInventory(self):
        return self.get_dword(0x5C)

    def ptPrevItem(self):
        return self.get_dword(0x60)

    def ptNextItem(self):
        return self.get_dword(0x64)

    def ptOwner(self):
        return self.get_dword(0x84)


class CNetClient(CMemory):
    def __init__(self, data):
        super(CNetClient, self).__init__(data)

    def ClientID(self):
        return self.get_dword(0x00)

    def Flag(self):
        return self.get_word(0x0A)

    def IsHardCoreGame(self):
        return self.Flag() & 0x4

    def ClassId2(self):
        return self.get_byte(0x0C)

    def CharName(self):
        return self.get_byte_pointer(0x0D)

    def AccountName(self):
        return self.get_byte_pointer(0x1D)

    def CharPortrait(self, n):  # n < 64
        return self.get_dword(0x6C + n * 4)

    def UnitType(self):
        return self.get_dword(0x16C)

    def UnitId(self):
        return self.get_dword(0x170)

    def ptPlayerUnit(self):
        return self.get_dword(0x174)

    def ptGame(self):
        return self.get_dword(0x1A8)

    def ptNext(self):
        return self.get_dword(0x4A8)

    def ptListNext(self):
        return self.get_dword(0x4AC)

    def ptNextByName(self):
        return self.get_dword(0x4B0)

    def ExpLost(self):
        return self.get_dword(0x508)

    def LangId(self):
        return self.get_dword(0x50C)


class CPlayerData(CMemory):
    def __init__(self, data):
        super(CPlayerData, self).__init__(data)

    def Name(self):
        return self.get_byte_pointer(0x00)

    def ptQuest(self, level):  # levle < 3, return CQuestInfo
        return self.get_dword(0x10 + level * 4)

    def ptWaypoints(self, level):  # levle < 3, return CWaypoint
        return self.get_dword(0x1C + level * 4)

    def ptArenaUnit(self):
        return self.get_dword(0x34)

    def ptNetClient(self):  # retrun CNetClient
        return self.get_dword(0x9C)


class CStaticPath(CMemory):
    def __init__(self, data):
        super(CStaticPath, self).__init__(data)

    def ptRoom1(self):
        return self.get_dword(0x00)

    def MapPosX(self):
        return self.get_dword(0x04)

    def MapPosY(self):
        return self.get_dword(0x08)

    def PosX(self):
        return self.get_dword(0x0C)

    def PosY(self):
        return self.get_dword(0x10)


class CDynamicPath(CMemory):
    def __init__(self, data):
        super(CDynamicPath, self).__init__(data)

    def OffsetX(self):
        return self.get_word(0x00)

    def PosX(self):
        return self.get_word(0x02)

    def OffsetY(self):
        return self.get_word(0x04)

    def PosY(self):
        return self.get_word(0x06)

    def MapPosX(self):
        return self.get_dword(0x08)

    def MapPosY(self):
        return self.get_dword(0x0C)

    def TargetX(self):
        return self.get_word(0x10)

    def TargetY(self):
        return self.get_word(0x12)

    def ptRoom1(self):
        return self.get_dword(0x1C)

    def ptUnit(self):
        return self.get_dword(0x30)

    def Flags(self):
        return self.get_dword(0x34)

    def PathType(self):
        return self.get_dword(0x3C)

    def PrevPathType(self):
        return self.get_dword(0x40)

    def UnitSize(self):
        return self.get_dword(0x44)

    def ptTargetUnit(self):
        return self.get_dword(0x58)

    def TargetType(self):
        return self.get_dword(0x5C)

    def TargetId(self):
        return self.get_dword(0x60)

    def Direction(self):
        return self.get_byte(0x64)


class UnitAny(CMemory):
    def __init__(self, data):
        super(UnitAny, self).__init__(data)

    def UnitType(self):
        return self.get_dword(0x00)

    def PlayerClass(self):
        return self.get_dword(0x04)

    def TxtFileNo(self):
        return self.get_dword(0x04)

    def MemoryPool(self):
        return self.get_dword(0x08)

    def AllocUnitID(self):
        return self.get_dword(0x0C)

    def CurrentAnim(self):
        return self.get_dword(0x10)

    def ptMonsterData(self):  # return CMonsterData
        return self.get_dword(0x14)

    def ptObjectData(self):  # return CObjectData
        return self.get_dword(0x14)

    def ptItemData(self):  # return CItemData
        return self.get_dword(0x14)

    def ptPlayerData(self):  # return CPlayerData
        return self.get_dword(0x14)

    def Act(self):
        return self.get_byte(0x18)

    def ptAct(self):  # return CAct
        return self.get_dword(0x1C)

    def SeedLow(self):
        return self.get_dword(0x20)

    def SeedHi(self):
        return self.get_dword(0x24)

    def SeedStarting(self):
        return self.get_dword(0x28)

    def ptItemPath(self):  # return CStaticPath
        return self.get_dword(0x2C)

    def ptMonPath(self):  # return DynamicPath
        return self.get_dword(0x2C)

    def ptPath(self):  # return CPath
        return self.get_dword(0x38)

    def AnimSpeed(self):
        return self.get_dword(0x3C)

    def CurFrame(self):
        return self.get_dword(0x44)

    def RemainingFrame(self):
        return self.get_dword(0x48)

    def AnimSpeedW(self):
        return self.get_word(0x48)

    def ActionFlag(self):
        return self.get_byte(0x4E)

    def ptAnimData(self):
        return self.get_dword(0x50)

    def ptStats(self):  # return CStatsList
        return self.get_dword(0x5C)

    def ptInventory(self):  # return CUnitInventory
        return self.get_dword(0x60)

    def ptGame(self):  # return CGameStruct
        return self.get_dword(0x80)

    def OwnerType(self):
        return self.get_dword(0x94)

    def OwnerId(self):
        return self.get_dword(0x98)

    def ptSkills(self):  # return CSkillInfo
        return self.get_dword(0xA8)

    def ptCombatData(self):
        return self.get_dword(0xAC)

    def ItemCode(self):  # for an item being dropped by this unit
        return self.get_dword(0xB8)

    def Flags1(self):
        return self.get_dword(0xC4)

    def Flags2(self):
        return self.get_dword(0xC8)

    def IsLord(self):
        return self.Flags2() & 0x02000000

    def ClientId(self):
        return self.get_dword(0xD0)

    def ptFirstMonster(self):
        return self.get_dword(0xE0)

    def Unit1(self):
        return self.get_dword(0xE4)

    def Unit2(self):
        return self.get_dword(0xE8)


class DamageData(CMemory):
    def __init__(self, data):
        super(DamageData, self).__init__(data)

    '''
    0x00000001 - HITFLAG_SRCDAMAGE_MISSILE
    0x00000002 - HITFLAG_SUCCESSFUL_CRITICAL_HIT
    0x00000010 - HITFLAG_FRIENDLY_FIRE
    0x00000020 - HITFLAG_SRCDAMAGE_MELEE
    0x00000100 - HITFLAG_BYPASS_UNDEAD
    0x00000200 - HITFLAG_BYPASS_DEMONS
    0x00000400 - HITFLAG_BYPASS_BEASTS
    '''

    def HitFlags(self):
        return self.get_dword(0x00)

    '''
    0x00000001 - RESULTFLAG_HIT
    0x00000002 - RESULTFLAG_DEATH
    0x00000004 - RESULTFLAG_GETHIT
    0x00000008 - RESULTFLAG_KNOCKBACK
    0x00000010 - RESULTFLAG_BLOCK
    0x00000020 - RESULTFLAG_DISALLOW_EVENTS
    0x00000100 - RESULTFLAG_DODGE
    0x00000200 - RESULTFLAG_AVOID
    0x00002000 - RESULTFLAG_SOFTHIT
    0x00008000 - RESULTFLAG_WEAPONBLOCK
    '''

    def ResultFlags(self):
        return self.get_word(0x04)

    def Extra(self):
        return self.get_word(0x06)

    def PhysDamage(self):  # 物理伤害
        return self.get_long(0x08)

    def EnDmgPct(self):
        return self.get_long(0x0C)

    def FireDamage(self):  # 火焰伤害
        return self.get_long(0x10)

    def BurnDamage(self):
        return self.get_long(0x14)

    def BurnLen(self):
        return self.get_long(0x18)

    def LtngDamage(self):  # 闪电伤害
        return self.get_long(0x1C)

    def MagDamage(self):  # 魔法伤害
        return self.get_long(0x20)

    def ColdDamage(self):  # 冰冷伤害
        return self.get_long(0x24)

    def PoisDamage(self):  # 毒素伤害
        return self.get_long(0x28)

    def PoisLen(self):
        return self.get_dword(0x2C)

    def ColdLen(self):
        return self.get_dword(0x30)

    def FrzLen(self):
        return self.get_dword(0x34)

    def LifeLeech(self):
        return self.get_dword(0x38)

    def ManaLeech(self):
        return self.get_long(0x3C)

    def StamLeech(self):
        return self.get_dword(0x40)

    def StunLen(self):
        return self.get_dword(0x44)

    def AbsLife(self):
        return self.get_dword(0x48)

    def DmgTotal(self):
        return self.get_dword(0x4C)

    def PiercePct(self):
        return self.get_dword(0x54)

    def DamageRate(self):
        return self.get_dword(0x58)

    def HitClass(self):
        return self.get_dword(0x60)

    def HitClassActiveSet(self):
        return self.get_byte(0x64)

    def ConvType(self):
        return self.get_byte(0x65)

    def ConvPct(self):
        return self.get_dword(0x68)


class CDmgmisc(CMemory):
    def __init__(self, data):
        super(CDmgmisc, self).__init__(data)

    def Color(self):
        return self.get_byte(0x00)

    def PlayerFlag(self):
        return self.get_byte(0x01)

    def WorldMonsterPercent(self):
        return self.get_word(0x02)


class CDmgPack(CMemory):
    def __init__(self, data):
        super(CDmgPack, self).__init__(data)

    def ptDmgmisc(self):  # return CCDmgmisc
        return self.get_pointer(0x00)

    def DmgMisc(self):
        return self.get_dword(0x00)
